package com.fzf.org.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 博客状态枚举类
 */
@Getter
@AllArgsConstructor
public enum BlogStatusEnum {
    
    /**
     * 创建后默认草稿状态
     */
    DRAFT(0, "草稿"),
    
    /**
     * 审核中状态
     */
    CENSORING(1, "审核中"),
    
    /**
     * 已发布状态
     */
    PUBLISHED(2, "已发布"),
    
    /**
     * 已下架状态
     */
    DOWN(3, "已下架");
    
    /**
     * 状态值
     */
    private final Integer value;
    
    /**
     * 状态名称
     */
    private final String name;
    
    /**
     * 根据状态值获取枚举实例
     *
     * @param value 状态值
     * @return 对应的枚举实例，如果未找到则返回null
     */
    public static BlogStatusEnum getByValue(Integer value) {
        if (value == null) {
            return null;
        }
        return Arrays.stream(values())
                .filter(status -> status.getValue().equals(value))
                .findFirst()
                .orElse(null);
    }
    
    /**
     * 根据状态名称获取枚举实例
     *
     * @param name 状态名称
     * @return 对应的枚举实例，如果未找到则返回null
     */
    public static BlogStatusEnum getByName(String name) {
        if (name == null) {
            return null;
        }
        return Arrays.stream(values())
                .filter(status -> status.getName().equals(name))
                .findFirst()
                .orElse(null);
    }
}